package done.normal_801_900;

import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 846. Hand of Straights 一手顺子
 * <p>
 * 爱丽丝有一手（hand）由整数数组给定的牌。
 * 现在她想把牌重新排列成组，使得每个组的大小都是 W，且由 W 张连续的牌组成。
 * 如果她可以完成分组就返回 true，否则返回 false。
 * <p>
 * 示例 1：
 * 输入：hand = [1, 2, 3, 6, 2, 3, 4, 7, 8], W = 3
 * 输出：true
 * 解释：爱丽丝的手牌可以被重新排列为 [1,2,3]，[2,3,4]，[6,7,8]。
 * 示例 2：
 * 输入：hand = [1,2,3,4,5], W = 4
 * 输出：false
 * 解释：爱丽丝的手牌无法被重新排列成几个大小为 4 的组
 * 答案：
 * 定义一个数组，记录每个元素出现的次数, 如果w == 3 数组里就一共有
 * 3个元素，每个坐标上的数字代表出现的频率
 * <p>
 * 第1个      第2个        第3个
 * |          |           |
 * [0,         1,          2]    <-- w 是数组的长度
 * |          |           |
 * |          |           |
 * 【3 % 3】  【1 % 3】   【2 % 3】
 * 【6 % 3】  【4 % 3】   【5 % 3】
 * 【9 % 3】  【7 % 3】   【8 % 3】
 * <p>
 * 2019-05-19 11:26
 **/
@SuppressWarnings("all")
public class HandOfStraights {

    public boolean isNStraightHand(int[] hand, int w) {
        // 190519 first
        return true;
    }

    @Test
    public void test() {
        info(isNStraightHand(new int[]{1, 2, 3, 6, 2, 3, 4, 7, 8}, 3));
    }
}
































/*
public boolean isNStraightHand(int[] hand, int w) {
    if (hand.length % w != 0)
        return false;
    int[] array = new int[w];
    for (int i : hand) {
        array[i % w]++;
    }
    for (int i = 0; i < w - 1; i++) {
        //若是顺子，array的每一元素理应是相等的
        if (array[i] != array[i+1])
            return false;
    }
    return true;
}
*/
